<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .box {
            width: 300px;
            height: 500px;
            border: 1px solid red;
            margin: 50px auto;
            overflow: hidden;
            position: relative;
        }
        .content {
            padding: 15px;
        }
        .scroll {
            width: 20px;
            height: 500px;
            background-color: #ccc;
            position: absolute;
            top: 0;
            right: 0;
        }
        .bar {
            width: 20px;
            background-color: red;
            border-radius: 5px;
            cursor: pointer;
            position: absolute;
            top: 0;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <div class="content">
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        孩儿励志出湘关，学不成名终不还。<br>
        埋骨何须桑梓地，人生无处不青山。<br>
        -------------结束------------<br>
    </div>
    <div class="scroll">
        <div class="bar"></div>
    </div>
</div>

<script>
    //0.获取相关元素
    var box = document.getElementById("box");
    var content = box.children[0];
    var scroll = box.children[1];
    var bar = scroll.children[0];
    //1.根据内容和盒子的比例确定bar的高。
    //内容的高/盒子的高 = scroll的高/bar的高
    //bar的高 = 盒子的高*scroll的高/内容的高
    var barH = box.offsetHeight*scroll.offsetHeight/content.offsetHeight;
    bar.style.height = barH +'px';

    bar.onmousedown = function (event) {
        event = event || window.event;
        var pageyy = event.pageY;

        document.onmousemove = function (event) {
            event = event || window.event;
            var pagey = event.pageY;
            pagey = pagey-pageyy;
            if (pagey<0){
                pagey = 0;
            }
            if(pagey>scroll.offsetHeight - bar.offsetHeight){
                pagey = scroll.offsetHeight - bar.offsetHeight;
            }

            bar.style.top = pagey + 'px';

            //内容等比联动
            //高级比例：  内容走的距离/bar走的距离 = （内容的高-大盒子的高）/（scroll的高-bar的高）
            var scalse = (content.offsetHeight-box.offsetHeight)/(scroll.offsetHeight-bar.offsetHeight);
            content.style.marginTop = -scalse*pagey +'px';
            window.getSelection?window.getSelection().removeAllRanges():document.selection.empty();
        }
    };
    //事件解绑
    document.onmouseup = function () {
        document.onmousemove = null;
    }
</script>
</body>
</html>